perm filename SPRINT.FAI[SCR,LCS]4 blob sn#364001 filedate 1978-06-29 generic text, type T, neo UTF8
	TITLE SPRINT 
	INTERNAL PRINT,IFIX,FLOAT,FORNAM,RNDINT,RAND
	EXTERNAL FILES.	    ;WRITING ON DSK (DEV.1 ONLY!)

;FORTRAN CALLABLE RANDOM NUMBER GENERATOR
;
;USE    CALL RNDINT   TO INITIALIZE THE GENERATOR
;                     (THE GENERATOR IS LOADED INITIALIZED)
;USE    RAND(XL,XH)   AS A FUNCTION TO RETURN THE NEXT 
;                     RANDOM NUMBER BETWEEN XL AND XH
;                     (XL,XH ARE FLOATING POINT,RAND RETURNS
;		      FLOATING POINT)
;
RNDINT:	0
	MOVE 0,[756132257563]
	MOVEM 0,R1
	ADDI 0,2
	MOVEM 0,R2
	JRA 16,0(16)
R1:	756132257563
R2:	756132257565

RAND:	0
	MOVEM 1,TEMP
	MOVE 0,@0(16)
	MOVE 1,@1(16)
	FSBR 1,0
	MOVEM 0,LLIM#
	MOVE 0,R1
	ADD 0,R2
	EXCH 0,R2
	MOVEM 0,R1
	LSH 0,-11
	FSC 0,200
	FMP 0,1
	FAD 0,LLIM
	MOVE 1,TEMP
	JRA 16,2(16)
TEMP:	0

IFIX:	0		;REMOVE THESE 6 LINES AT OTHER SITES.
	KIFIX 0,@(16)
	JRA 16,1(16)
FLOAT:	0
	FLTR 0,@(16)
	JRA 16,1(16)
A←1
B←2
C←3
D←4
P←17
LOOP:	PUSHJ	P,TYI			; THIS PRINTS FILE FOR22.DAT ON LPT
	POPJ	P,			; AND THEN ZEROS FOR22.DAT.
	CAIN	A,15
	JRST	LOOP
	CAIN	A,12
	JRST	MK1
	CAIN	A,53
	JRST	MK2
	TRNN	B,2
	JRST	OUTIT
	MOVEI	B,0
	MOVE	C,A
	MOVEI	A,15
	PUSHJ	P,TYO
	MOVEI	A,12
	PUSHJ	P,TYO
	MOVE	A,C
OUTIT:	PUSHJ	P,TYO
	JRST	LOOP

MK1:	TRO	B,2
	JRST	LOOP

MK2:	TRNN	B,2
	JRST	OUTIT
	MOVEI	B,0
	JRST	LOOP

PRINT:	0
	INIT	12,0
	SIXBIT	/LPT/
	XWD	OBUF,
	CALLI	12
	OUTBUF	12,2

COMDLP:	PUSHJ	P,DNIT
	PUSHJ	P,LOOP

EXIT:	MOVEI A,14
	RELEASE	11,0
	RELEASE 12,0
	JRA 16,(16)

DNIT:	RELEASE	11,0
	INIT	11,0
	SIXBIT	/DSK/
	IBUF
	CALLI	12
	SETZM FILNAM+3
	LOOKUP	11,FILNAM
	CALLI	12
	INBUF	11,2
	POPJ	P,
TYI:	SOSLE	IBUF+2
	JRST	OKIN
	IN	11,0
	JRST	OKIN
	STATZ	11,20000
	POPJ	P,

	CALLI	12

OKIN:	ILDB	A,IBUF+1
	JUMPE	A,TYI
	AOS	(P)
	POPJ	P,

TYO:	SOSG	OBUF+2
	OUTPUT	12,0
	IDPB	A,OBUF+1
	POPJ	P,

IBUF:	BLOCK	3
OBUF:	BLOCK	3
FILNAM:	SIXBIT/FOR22/
	SIXBIT/DAT/
	0
	0
PDL:	BLOCK 10

FORNAM:	0			;CALL FORNAM(NAME,EXT)
;CHANGES NAMES TO SIXBIT        THIS IS TO PUT EXTENSIONS OTHER
	MOVE 0,@0(16)		;THAN .DAT ON OUTPUT
	MOVEM 0,FN#
	MOVE 1,[POINT 7,FN]
INTF3:	MOVE 2,[POINT 6,NAM]
	SETZM NAM
	MOVEI 3,5
INTF1:	ILDB 0,1
	CAIN 0," "
	JRST INTF2
	SUBI 0,40
	IDPB 0,2
	SOJG 3,INTF1
INTF2:	MOVE 0,@1(16)
	MOVEM 0,EX#
	MOVE 1,[POINT 7,EX]
EXTF3:	MOVE 2,[POINT 6,EXT]
	SETZM EXT
	MOVEI 3,5
EXTF1:	ILDB 0,1
	CAIN 0," "
	JRST EXTF2
	SUBI 0,40
	IDPB 0,2
	SOJG 3,EXTF1
EXTF2:	MOVE 0,NAM#
	MOVEM 0,FILES.
	MOVE 0,EXT#
	MOVEM 0,FILES.+1
	JRA 16,2(16)

	END